home *** CD-ROM | disk | FTP | other *** search
- /*
- …ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕª
- ∫ o:Clip ∫
- ∫ An Object Oriented Extension to Clipper 5.01 ∫
- ∫ (c) 1991 Peter M. Freese, CyberSoft ∫
- »ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕº
-
- Version 1.01x - 06/25/92
- Modified by JHK,JHK-Software,Piestany
- */
-
- EXTERNAL ;
- __IVAR001,__IVAR002,__IVAR003,__IVAR004,__IVAR005,;
- __IVAR006,__IVAR007,__IVAR008,__IVAR009,__IVAR010,;
- __IVAR011,__IVAR012,__IVAR013,__IVAR014,__IVAR015,;
- __IVAR016,__IVAR017,__IVAR018,__IVAR019,__IVAR020,;
- __IVAR021,__IVAR022,__IVAR023,__IVAR024,__IVAR025,;
- __IVAR026,__IVAR027,__IVAR028,__IVAR029,__IVAR030,;
- __IVAR031,__IVAR032,__IVAR033,__IVAR034,__IVAR035,;
- __IVAR036,__IVAR037,__IVAR038,__IVAR039,__IVAR040,;
- __IVAR041,__IVAR042,__IVAR043,__IVAR044,__IVAR045,;
- __IVAR046,__IVAR047,__IVAR048,__IVAR049,__IVAR050,;
- __IVAR051,__IVAR052,__IVAR053,__IVAR054,__IVAR055,;
- __IVAR056,__IVAR057,__IVAR058,__IVAR059,__IVAR060,;
- __IVAR061,__IVAR062,__IVAR063,__IVAR064,__IVAR065,;
- __IVAR066,__IVAR067,__IVAR068,__IVAR069,__IVAR070,;
- __IVAR071,__IVAR072,__IVAR073,__IVAR074,__IVAR075,;
- __IVAR076,__IVAR077,__IVAR078,__IVAR079,__IVAR080,;
- __IVAR081,__IVAR082,__IVAR083,__IVAR084,__IVAR085,;
- __IVAR086,__IVAR087,__IVAR088,__IVAR089,__IVAR090,;
- __IVAR091,__IVAR092,__IVAR093,__IVAR094,__IVAR095,;
- __IVAR096,__IVAR097,__IVAR098,__IVAR099,__IVAR100,;
- __IVAR101,__IVAR102,__IVAR103,__IVAR104,__IVAR105,;
- __IVAR106,__IVAR107,__IVAR108,__IVAR109,__IVAR110,;
- __IVAR111,__IVAR112,__IVAR113,__IVAR114,__IVAR115,;
- __IVAR116,__IVAR117,__IVAR118,__IVAR119,__IVAR120
-
- EXTERNAL ;
- __SIVAR001,__SIVAR002,__SIVAR003,__SIVAR004,__SIVAR005,;
- __SIVAR006,__SIVAR007,__SIVAR008,__SIVAR009,__SIVAR010,;
- __SIVAR011,__SIVAR012,__SIVAR013,__SIVAR014,__SIVAR015,;
- __SIVAR016,__SIVAR017,__SIVAR018,__SIVAR019,__SIVAR020,;
- __SIVAR021,__SIVAR022,__SIVAR023,__SIVAR024,__SIVAR025,;
- __SIVAR026,__SIVAR027,__SIVAR028,__SIVAR029,__SIVAR030,;
- __SIVAR031,__SIVAR032,__SIVAR033,__SIVAR034,__SIVAR035,;
- __SIVAR036,__SIVAR037,__SIVAR038,__SIVAR039,__SIVAR040,;
- __SIVAR041,__SIVAR042,__SIVAR043,__SIVAR044,__SIVAR045,;
- __SIVAR046,__SIVAR047,__SIVAR048,__SIVAR049,__SIVAR050,;
- __SIVAR051,__SIVAR052,__SIVAR053,__SIVAR054,__SIVAR055,;
- __SIVAR056,__SIVAR057,__SIVAR058,__SIVAR059,__SIVAR060,;
- __SIVAR061,__SIVAR062,__SIVAR063,__SIVAR064,__SIVAR065,;
- __SIVAR066,__SIVAR067,__SIVAR068,__SIVAR069,__SIVAR070,;
- __SIVAR071,__SIVAR072,__SIVAR073,__SIVAR074,__SIVAR075,;
- __SIVAR076,__SIVAR077,__SIVAR078,__SIVAR079,__SIVAR080,;
- __SIVAR081,__SIVAR082,__SIVAR083,__SIVAR084,__SIVAR085,;
- __SIVAR086,__SIVAR087,__SIVAR088,__SIVAR089,__SIVAR090,;
- __SIVAR091,__SIVAR092,__SIVAR093,__SIVAR094,__SIVAR095,;
- __SIVAR096,__SIVAR097,__SIVAR098,__SIVAR099,__SIVAR100,;
- __SIVAR101,__SIVAR102,__SIVAR103,__SIVAR104,__SIVAR105,;
- __SIVAR106,__SIVAR107,__SIVAR108,__SIVAR109,__SIVAR110,;
- __SIVAR111,__SIVAR112,__SIVAR113,__SIVAR114,__SIVAR115,;
- __SIVAR116,__SIVAR117,__SIVAR118,__SIVAR119,__SIVAR120
-
- STATIC aClassList := {}, aMethodList := {}, aVarList := {}, nCurrent := 0
- STATIC oChild
-
- FUNCTION __DefineClass(cName,bParent)
- LOCAL nParent,oParent
- if(bParent <> nil,oParent:= Eval(bParent),) // ensure parent defined
- AADD(aClassList,UPPER(cName))
- AADD(aMethodList,{ {"__PARENT","__PARENT"} })
- AADD(aVarList,{})
- ++nCurrent
- if bParent <> nil .and. ;
- (nParent := ASCAN(aClassList,UPPER(oParent:ClassName))) <> 0
- aMethodList[nCurrent] := ACLONE(aMethodList[nParent])
- aVarList[nCurrent] := ACLONE(aVarList[nParent])
- end
- RETURN oParent
-
- PROCEDURE __AddVar(cName)
- AADD(aVarList[nCurrent],cName)
- RETURN
-
- PROCEDURE __AddMethod(cName,cUDF)
- LOCAL n
- cName := UPPER(cName)
- n := ASCAN(aMethodList[nCurrent], { |aMethod| aMethod[1] == cName } )
- if n > 0
- aMethodList[nCurrent,n] := {cName,cUDF} //override parent method
- else
- AADD(aMethodList[nCurrent],{cName,cUDF})
- end
- RETURN
-
- FUNCTION __MakeClass()
- LOCAL i := 0,cVar,s
- LOCAL nHandle := __ClassNew(aClassList[nCurrent],LEN(aVarList[nCurrent])+1)
- AEVAL(aMethodList[nCurrent],;
- {|cMethod| __ClassAdd(nHandle,cMethod[1],cMethod[2]) } )
- while i++ < LEN(aVarList[nCurrent])
- cVar := aVarList[nCurrent,i]
- s := PADL(LTRIM(STR(i+1)),3,"0") //JHK
- __ClassAdd(nHandle,cVar,"__IVAR"+s)
- __ClassAdd(nHandle,"_"+cVar,"__SIVAR"+s)
- end
- RETURN nHandle
-
- FUNCTION __PARENT(cClass) //virtual method
- LOCAL oParent
- oChild:=QSelf()
- oParent:=oChild[1]
- if !(cClass==nil)
- cClass:=Upper(cClass)
- while !(cClass==oParent:ClassName); oParent:=oParent[1]; end
- end
- RETURN oParent
-
- FUNCTION __GetSelf(self)
- LOCAL r:=if(oChild==nil,self,oChild)
- oChild:=nil
- RETURN r
-
- FUNCTION __ParentNew(self)
- if(oChild==nil,oChild:=self,)
- RETURN oChild
-
- FUNCTION __PutSelf(self)
- RETURN oChild:=self
-
-